1. The Field of the Invention
The present invention relates to performing computer vision processing on video images generated by a camera on a visual display, and more particularly to executing a video setup protocol to determine whether the camera and the surrounding environment satisfy predetermined criteria of an intended application.
2. The Relevant Art
More and more commonly personal computers are becoming equipped with video cameras for generating video images for input into the computer. With these video cameras, users are able to generate video images of themselves and/or their surroundings and view such video images on visual display devices.
Because of the greater availability of personal computers with video cameras, various computer applications involving video images are being created directed towards home users. One type of application uses personal computer video cameras to create an interactive display between images generated by the video camera and images generated by the personal computer. This type of application includes entertainment applications where an image of the subject is superimposed onto a computer generated background environment so that it appears that the subject is actually in the background environment. The background environment images can be of any type from the mundane and everyday such as a room to the fantastic such as the moon or another planet.
One method by which these applications may achieve a realistic integration of the subject's image with the background environment is by using a special effects technique commonly associated with the motion picture and television industries known as blue screen imaging. In traditional blue screen imaging, an image of a subject is taken in front of an evenly lit, bright, fixed-color stationary background (typically blue, but which may be green or even red). A compositing process is then used to replace all the blue in the picture with another image, known as the background plate.
However, transferring this blue screen imaging technique for use in computer applications for personal computer users (such as at-home personal computer users) creates several challenges that must be overcome in order to adequately work in a home environment. For example, the locations of the actors (or subjects) in traditional blue screen imaging shoots have pre-measured markers on the stage to indicate where the actors are to stand during the shoot so that the actors are the proper distance from the camera for the shot. With these markers, actors know exactly where to stand each and every take so that they are always properly positioned.
In contrast, finding a relatively quick and easy way to properly position a subject with respect to the video camera is a challenge for designers of at-home applications. In the home environment, there are usually no markers to indicate to a subject where to stand in relation to the video camera for the proper function of the at-home video application. Making such markers in a home environment can take a lot of time and also may not be suitable for the home environment.
Also, traditional blue screen imaging is typically conducted in a controlled environment such as a sound stage or set in order to create a realistic composite image. In such a controlled environment, the amount of lighting is strictly controlled as well as the location of the lighting with respect to the background. Additionally, these sound stages and sets do not have any extra or unnecessary objects in the background that would interfere with the creation of the final composite image.
In contrast, a home environment is normally not as controlled of an environment as a sound stage or set. Lighting in the home environment is uneven typically with many dark areas and bright areas in each room. Windows and skylights in the home environment can create very bright spots in an otherwise rather dark room. Additionally, light sources in the home environment can be located anywhere in a room: next to walls, in corners, and on ceilings so that light is not directed in any one direction in the room. With such a variance in lighting conditions, applications for use in the home environment attempting to use a compositing technique must have a way to determine whether the lighting conditions in the home environment are adequate to meet the needs of the application. Additionally, such applications also need to be able to indicate lighting problems to a user so that the user can attempt to fix or adjust the lighting in the room to meet the requirements of the application.
The typical at-home environment is not monochromatic like the background of a blue screen imaging sound stage or set, and most home environments are full of objects such as furniture that need to be left out of the composited image. Because of these conditions, designers of such at-home interactive applications need to have a means for separating the subject from the background environment so that the background environment is left out of the composited image. One way to accomplish this determination is to use the presence and absence of motion in order to distinguish the home environment from the subject who is typically moving. However, some of the unwanted objects in the home environment are moving objects such as, for example, window drapes blowing in a breeze, leaves blowing in the wind on a tree visible through a window, and even ceiling fans. The movement of these objects may confuse the application into thinking that these objects are part of the subject and thereby interfere with the application's determination of what is and is not background.
Additionally, there are a number of different personal computer video cameras of varying quality and with a wide range of features and abilities available to at-home users. As a result, designers of at-home video applications must be able to determine whether the video camera being used by a user is suitable for proper running of the application. Additionally, such designers must also be able to set the various personal computer video cameras to their optimal settings for optimal running of the application.